package com.witsight.platform.service;

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.witsight.platform.model.BoEntity;

/**   
 * 说明：共通服务接口
 * @Title: CommonService.java 
 * @Package com.witsight.platform.service 
 * @See: {@link CommonService}
 * Copyright: Copyright (c) 2017
 * Company:sany huax witsight team by product
 * @author: penght  
 * @date: 2017年9月19日 上午8:12:20 
 * @version: V1.0
 *
 */
public interface CommonService {
	/**
	 * 
	 * 说明：根据map参数取得所有数据 (SQL)
	 * @Title: findSqlAllByParams
	 * @See: {@link #findSqlAllByParams(String, Map)}
	 * @author penght
	 * @param queryName namequery中配置的key
	 * @param params 检索条件map对象
	 * @return 
	 * @date: 2017年9月15日 下午1:45:28
	 */
	abstract <O> List<O> findSqlAllByParams(String queryName, BoEntity params);
	
	/**
	 * 
	 * 说明：根据map参数取得一条数据 (Sql)
	 * @Title: findSqlOneByParams
	 * @See: {@link #findSqlOneByParams(String, Map)}
	 * @author penght
	 * @param queryName  namequery中配置的key
	 * @param mapObject 检索条件map对象
	 * @return 一条数据
	 * @date: 2017年9月15日 上午10:25:38
	 */
	abstract <O> O findSqlOneByParams(String queryName, BoEntity params);
	
	/**
	 * 
	 * 说明：根据翻页取得所有的对象，通过动态hql
	 * @Title: findSqlPageByParams
	 * @See: {@link #findSqlPageByParams(String, Map, Pageable)}
	 * @author penght
	 * @param queryName namequery中配置的key
	 * @param mapObject 检索条件map对象
	 * @param pageable 翻页参数
	 * @return 翻页结果集合
	 * @date: 2017年9月15日 上午10:25:47
	 */
	abstract <O> Page<O> findSqlPageByParams(String queryName, BoEntity params, Pageable pageable);
}
